using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using TestImport.Model;

namespace TestImport.View.BeherenBestanden
{
    public partial class UitgeversBeheren : TestImport.SuperDataView
    {
        private Boolean isnew;
        private Boolean issnel;
        private String oudeCode;
        private Boolean updateMislukt;
        private BoekBeheer b = null;

        public UitgeversBeheren()
        {
            InitializeComponent();
            this.BackColor = InstParameters.Default.schermkleur;
        }

        public UitgeversBeheren(BoekBeheer b)
        {
            InitializeComponent();
            this.b = b;
        }


       
        private void UitgeversBeheren_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'onsBoekenPakketDataSet.Uitgever' table. You can move, or remove it, as needed.
            this.uitgeverTableAdapter.Fill(this.onsBoekenPakketDataSet.Uitgever);
            this.WindowState = FormWindowState.Maximized;

        }

        private void Nieuw_Click(object sender, EventArgs e)
        {
            this.switchEnabledModus();
            this.switchButtonModus();
            this.uitgeverBindingSource.AddNew();
            txtIsPlato.Text = "False";
            txtCode.Focus();
            isnew = true;
            issnel = false;
            updateMislukt = false;

        }

        private void Wijzig_Click(object sender, EventArgs e)
        {
            this.switchEnabledModus();
            this.switchButtonModus();
            updateMislukt = false;
            isnew = false;
            issnel = false;
            oudeCode = txtCode.Text;
            txtCode.Focus();
        }

        private void Wis_Click(object sender, EventArgs e)
        {

        }

        private void Registreer_Click(object sender, EventArgs e)
        {
            DialogResult result = DialogResult.No;
            if (issnel) result = DialogResult.Yes;
            else
            {
                if (isnew)
                    result = MessageBox.Show("Nieuwe uitgever registreren?", "Registreren nieuwe uitgever?", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                else
                    result = MessageBox.Show("Uitgever wijzigen?", "Registreren gewijzigde uitgever?", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            }
            if (result == DialogResult.Yes)
            {
                if (IsValide())
                {
                    if (!isnew)
                    {
                        if (!oudeCode.Equals(txtCode.Text)) UpdateCode();
                    }
                    try
                    {
                        this.uitgeverBindingSource.EndEdit();
                        this.uitgeverTableAdapter.Update(this.onsBoekenPakketDataSet.Uitgever);
                        this.switchEnabledModus();
                        this.switchButtonModus();
                        this.uitgeverDataGridView.Refresh();
                    }
                    catch (System.Exception ex)
                    {
                        MessageBox.Show(ex.Message.ToString());
                        updateMislukt = true;
                    }
                }
            }
            else
            {
                this.uitgeverBindingSource.CancelEdit();
                this.switchEnabledModus();
                this.switchButtonModus();
            }
        }


        private void RegistreerEnNieuw_Click(object sender, EventArgs e)
        {
            updateMislukt = false;
            try
            {
                issnel = true;
                this.Registreer_Click(sender, e);
                if ( ! updateMislukt && IsValide())
                    this.Nieuw_Click(sender, e);
            }
            catch (Exception ex) { ;}
        }

        private void switchButtonModus()
        {
            Nieuw.Enabled = !Nieuw.Enabled;
            Wijzig.Enabled = !Wijzig.Enabled;
            Wis.Enabled = !Wis.Enabled;
            Registreer.Enabled = !Registreer.Enabled;
            RegistreerEnNieuw.Enabled = !RegistreerEnNieuw.Enabled;
            Annuleer.Enabled = !Annuleer.Enabled;
            this.uitgeverDataGridView.Enabled = !this.uitgeverDataGridView.Enabled;
        }

        private void switchEnabledModus()
        {
            txtCode.ReadOnly = !txtCode.ReadOnly;
            txtNaam.ReadOnly = !txtNaam.ReadOnly;
        }

        private void Annuleer_Click(object sender, EventArgs e)
        {
            if (isnew)
            {
                this.uitgeverBindingSource.RemoveCurrent();
            }
            else
            {
                this.uitgeverBindingSource.CancelEdit();
            }
            this.switchEnabledModus();
            this.switchButtonModus();
        }

        public Boolean IsValide()
        {
            bool valide = txtNaam.Text.Length > 0;
            if (!valide)
                MessageBox.Show("Uitgever naam mag niet blanco zijn!!!");
            return valide;
        }

       
        private void uitgeverDataGridView_DataError(object sender, DataGridViewDataErrorEventArgs e)
        {
            MessageBox.Show("Omschrijving mag niet blanco zijn!!!");
        }

        private void UpdateCode()
        {
            int aantal = Database.Instance.GetDatabase.Uitgever_GetAantalByUitgeverCode(oudeCode);
            if (aantal > 0)
            {
                String nieuweUitgeverCode = txtCode.Text;
                int aantalUpdates = Database.Instance.GetDatabase.Uitgever_UpdateUitgever(nieuweUitgeverCode, oudeCode);
                //this.Text = "Aantal updates " + aantalUpdates;
            }
        }

        private void uitgeverDataGridView_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            try
           {
                 //this.Text = uitgeverDataGridView.Rows[e.RowIndex].Cells["dgvUitgeverNaam"].Value.ToString();
                 if (uitgeverDataGridView.Rows[e.RowIndex].Cells["dgvIsPlato"].Value.ToString().Equals("True"))
                 {
                     Wijzig.Enabled = false;
                     lblPlatoTekst.Text = "Plato uitgevers kunnen niet gewijzigd worden!!!";
                 }
                 else
                 {
                     Wijzig.Enabled = true;
                     lblPlatoTekst.Text = "";
                 }   
             }
             catch (Exception ex) { this.Text = "Nooo";}
        }

        private void uitgeverDataGridView_RowLeave(object sender, DataGridViewCellEventArgs e)
        {
           
        }

        private void UitgeversBeheren_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (b != null) b.refreshUitgever();
        }
    }
}

